这里是修真院后端小课堂,每篇分享文从
【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】
八个方面深度解析后端知识/技能,本篇分享的是:
【什么是TCP/IP协议?TCP的三次握手指的是什么,为什么一定要三次握手,而不是四次或者是两次? 】
标题:
【修真院java 小课堂】什么是TCP/IP协议?TCP的三次握手指的是什么,为什么一定要三次握手,而不是四次或者是两次?
开场语:
大家好,我是IT修真院郑州分院第12期的学员张泉良,一枚正直纯洁善良的JAVA程序员,今天给大家分享一下,修真院官网JAVA任务二,深度思考中的知识点—— 什么是TCP/IP协议?TCP的三次握手指的是什么,为什么一定要三次握手,而不是四次或者是两次?
- 背景介绍:
网络协议:
书本上的定义:网络协议是为计算机网络中进行数据交换而建立的规则、标准或约定的集合
网络协议就是人为规定的一套通信规范,只要双方都遵循这个规范,就能实现交流
TCP/IP具体含义:利用ip进行通信时所必须用到的协议群的统称。
具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议。
- 知识剖析:
TCP/IP协议族是一个四层协议系统,自底而上是数据链路层、网络层、传输层和应用层。上层协议使用下层协议提供的辅助。
(1) 数据链路层实现了网卡接口的网络驱动程序,以处理数据在物理媒介上的传输
(2) 网络层实现数据包的选路和转发。网络层的任务就是选择中间节点(路由器),以确定两台主机之间的通信路径
(3) 传输层为两台主机上的应用程序提供端到端的通信。传输层只关心通信的起始端和目的端,忽略数据包的中转过程
传输层协议主要有三个:TCP协议、UDP协议和SCTP协议
(4) 应用层负责处理应用程序的逻辑。
数据链路层、网络层和传输层负责处理网络通信细节,这部分必须既稳定又高效,因此在内核空间中实现。
而应用层则在用户空间,因为它负责处理众多逻辑,比如文件传输、名称查询等。
- 常见问题:
(1)TCP/IP协议通信的过程?
浏览器访问服务器服务流程:
1、浏览器访问网址
2、dns协议解析域名
3、http协议---http数据,确定数据传输格式等
4、TCP协议---加TCP首部----端口之间发送数据包----三次握手达成连接
5、IP协议---加IP首部----通过IP地址确定网络地址
6、以太网协议--加以太网首部----确定mac地址(主机网卡的唯一标识)
(2)如何建立TCP/IP连接?
TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。
所谓三次握手是指建立一个 TCP 连接时需要客户端和服务器端总共发送三个包以确认连接的建立。
基础信息:
TCP报文格式
(1)序列号:Sql序号,用来标识数据包,发起方发送数据时对此进行标记。
(2)确认序号:Ack序号,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
(3)标志位:共6个,即SYN、ACK、PSH、RST、URG、FIN
(3)为什么要三次握手?
在《计算机网络》一书中其中有提到,三次握手的目的是“为了防止已经失效的连接请求报文段突然又传到服务端,
因而产生错误”
三次握手是在安全可靠的基础上,握手次数最少的方案。两次握手并不能保证可靠性。四次握手又浪费了效率
- 编码实战:
- 拓展思考:
(1) TCP建立连接为什么需要三次握手而结束要四次挥手?
三次握手:client请求连接SYN---server确认收到,发送ACK和SYN---client确认收到
四次挥手:client请求关闭FIN---(server确认收到,发送ACK---server继续发送数据直到完毕,发送FIN)
----client确认收到
(2)TCP与UDP的区别
(3) TCP的可靠传输原理
停止等待协议
连续ARQ协议
- 参考文献:
(1) https://www.jianshu.com/p/e7f...
(2) https://blog.csdn.net/be_happ...
(3) 计算机网络第6版
7. 更多讨论:
Q1:Sequence number序列号是什么?
A1:Sql序号,用来标识数据包,发起方发送数据时对此进行标记。数据包的序号,有操作系统根据一定的算法生成,相当于id的作用。
Q2:acknowledgement number和ACK区别?
A2:ACK:标识符,只有0和1,只要有数据包的传输,ACK就要set为1;
acknowledgement number:ack序号,只有ACK标志位为1时,确认序号字段才有效,ack=Seq+1;
在数据包传输过程中ack=seq+len;
Q3:TCP与UDP的区别
A3:TCP协议提供面向连接的,可靠的传输服务,但速度较慢,适合文件下载等传输任务;UDP协议提供无连接的,不可靠的传输服务,但速度较快,适合媒体流等看重传输速度的传输任务
8. 鸣谢:
9. 结束语:
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。